package com.gis.bigdata.spark.core.rdd.builder

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @author LnnuUser
 * @create 2021-08-26-下午7:34
 */
object Spark01_RDD_Memory_Par {

  def main(args: Array[String]): Unit = {

    // TODO 准备环境
    //local[*] 代表本机的最大线程数，如果不写，模拟的就是单线程
    val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val sc: SparkContext = new SparkContext(sparkConf)

    // TODO 创建RDD
    // RDD的并行度 & 分区
    // makeRDD 方法可以传递第二个参数，这个参数表示分区的数量
    // 第二个参数可以不传递，使用的就是默认值：defaultParallelism(默认并行度)
    // spark在默认情况下，从配置对象中获取配置参数：spark.default.parallelism
    // 如果获取不到，那么使用totalCores属性，这个属性取值为当前运行环境的最大可用核数
    // spark.default.parallelism这个参数是可配的，sparkConf.set("spark.default.parallelism","5")
    val rdd: RDD[Int] = sc.makeRDD(
      List(1, 2, 3, 4), 2
    )

    //将处理的数据保存成分区文件
    rdd.saveAsTextFile("output")

    // TODO 关闭环境
    sc.stop()

  }

}
